import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

	private static ArrayList<Student> studentList = new ArrayList<>();
	
	
	// JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/studb";
 
    // 数据库的用户名与密码，需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "123456";


	public static void main(String[] args) {
		System.out.println("************************");
		System.out.println("**** 请输入选择的序号     **");
		System.out.println("******  1 查看学生列表    **");
		System.out.println("******  2             **");
		System.out.println("******  3             **");
		System.out.println("******  4             **");
		System.out.println("******  5             **");
		System.out.println("************************");
		
		Scanner sc = new Scanner(System.in); 
		int i = sc.nextInt();
		
		if(i == 1) {		
		   // 查看学生列表
		   queryStudentList();
		}

	}

	private static void queryStudentList() {
		
	/**
	 * 查询学生列表
	 */
		Connection conn = null;
        Statement stmt = null;
        try{
            // 注册 JDBC 驱动
            Class.forName("com.mysql.jdbc.Driver");
        
            // 打开链接
            System.out.println("连接数据库...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
        
            // 执行查询
            System.out.println(" 实例化Statement对象...");
            stmt = conn.createStatement();
            String sql;
            
            sql = "SELECT id, name, age, bjmc FROM student join class "+ "on student.bjbh=class.bjbh";
            ResultSet rs =  stmt.executeQuery(sql);
        
            // 展开结果集数据库
            while(rs.next()){
                // 通过字段检索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                int age = rs.getInt("age");
                String bjmc = rs.getString("bjmc");   
                Student student = new Student(id, name, age, bjmc);
                studentList.add(student);
            }
            // 完成后关闭
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 处理 JDBC 错误
            se.printStackTrace();
        }catch(Exception e){
            // 处理 Class.forName 错误
            e.printStackTrace();
        }finally{
            // 关闭资源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什么都不做
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        
        display(studentList);
        
        System.out.println("Goodbye!");
		
	}
	
	public static void display(ArrayList<Student> studentList) {
		if(studentList == null || studentList.size() == 0) {
			System.out.println("学生列表为空");
			return;
		}
		
        System.out.print("ID     姓名         年龄       班级名称     \n");
        
        for(int i=0; i<studentList.size(); i++) {
        	Student student = studentList.get(i);        	
        	// 输出每一个数据
            System.out.print(student.getId() + "      ");
            System.out.print(student.getName() + "      ");
            System.out.print(student.getAge() + "      ");
            System.out.print(student.getBjmc());
            System.out.print("\n");
        }	}
}